From 9b3edbc319afccf221ad0ce75061e6c364572964 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Tue, 6 Nov 2007 14:23:56 +0000 Subject: [PATCH] call gdk_flush() after showing the menu so we can definitely grab on it. 2007-11-06 Michael Natterer * gtk/gtkmenu.c (gtk_menu_popup): call gdk_flush() after showing the menu so we can definitely grab on it. Grab failure found by Xan Lopez. svn path=/trunk/; revision=18969 --- ChangeLog | 6 ++++++ gtk/gtkmenu.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1ac8f29cb7..42190c4c23 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-11-06 Michael Natterer + + * gtk/gtkmenu.c (gtk_menu_popup): call gdk_flush() after showing + the menu so we can definitely grab on it. Grab failure found by + Xan Lopez. + 2007-11-06 Michael Natterer * gtk/gtkwidget.c (gtk_widget_keynav_failed): fixed docs. diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index deb3a46c51..354ab21875 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -1449,6 +1449,13 @@ gtk_menu_popup (GtkMenu *menu, */ gtk_widget_show (menu->toplevel); + /* flush the X event queue for the popup to become realized and + * mapped, since grabbing requires a mapped window. (this only works + * for popups, regular windows need gtk_widget_show_now() to sync + * with window manager interaction). + */ + gdk_flush (); + if (xgrab_shell == widget) popup_grab_on_window (widget->window, activate_time, grab_keyboard); /* Should always succeed */ gtk_grab_add (GTK_WIDGET (menu)); -- 2.30.2